import { defineConfig } from "vite";
import react from "@vitejs/plugin-react-swc";
import dts from "vite-plugin-dts";
import { visualizer } from "rollup-plugin-visualizer"; // 导入 visualizer
import path from "path";
import pkg from "./package.json";

export default defineConfig({
  define: {
    "process.env.NODE_ENV": JSON.stringify("production"),
  },
  resolve: {
    alias: {
      "@": path.resolve(__dirname, "src"),
    },
  },
  plugins: [
    react(),
    dts({
      insertTypesEntry: true,
      tsconfigPath: "./tsconfig.app.json",
      include: ["src/**/*"],
      exclude: ["node_modules"],
      rollupTypes: true,
      outDir: "dist",
    }),
    visualizer({
      filename: "stats.html",
    }),
  ],
  build: {
    reportCompressedSize: true,
    // 不再报告 gzip 压缩大小
    // 样式代码分割
    cssCodeSplit: false,
    // 库配置
    lib: {
      // 入口文件
      entry: path.resolve(__dirname, "src/main.tsx"),
      // 库名称
      name: "TsSdkDemo",
      // 文件名
      fileName: (format) => `lib/${pkg.name}.${format}.js`,
      // 格式
      formats: ["es", "umd", "cjs"],
      // 样式文件名
      cssFileName: `css/${pkg.name}.css`,
    },
    // 打包选项
    rollupOptions: {
      // 外部依赖（不打包进 SDK）
      // external: ["react", "react-dom"], // 移除，将 React 和 ReactDOM 打包进 SDK
      // 全局变量映射（用于 UMD 格式）
      output: {
        // 全局变量映射（用于 UMD 格式）
        globals: {
          react: "React",
          "react-dom": "ReactDOM",
        },
      },
    },
  },
  server: {
    fs: {
      allow: ["./", "./dist"],
    },
  },
});
